package com.tianyuan.test2;

/**
 * 跳台阶
 *
 * @date 2025/10/22 20:01
 * 一只青蛙一次可以跳上1级台阶，也可以跳上2级。求该青蛙跳上一个 n 级的台阶总共有多少种跳法
 * （先后次序不同算不同的结果）。
 * 数据范围：1≤n≤40
 * 输入：2   返回值：2   说明：
 * 青蛙要跳上两级台阶有两种跳法，分别是：先跳一级，再跳一级或者直接跳两级。因此答案为2
 * 输入：7   返回值：21
 */

public class Solution {
    /**
     * @param number int整型 表示台阶的级数
     * @return int整型 表示跳上number级台阶的总跳法数
     */
    public int jumpFloor(int number) {
        // 当只有1级台阶时，只有1种跳法（直接跳1级）
        if (number == 1) {
            return 1;
        }
        // 当有2级台阶时，有2种跳法（分两次跳1级，或直接跳2级）
        else if (number == 2) {
            return 2;
        }
        // 递归逻辑：
        // 最后一步跳1级，则前面需跳(n-1)级，方法数为jumpFloor(n-1)
        // 最后一步跳2级，则前面需跳(n-2)级，方法数为jumpFloor(n-2)
        // 总方法数为两种情况之和
        return jumpFloor(number - 1) + jumpFloor(number - 2);
    }




    public static void main(String[] args) {
        Solution solution = new Solution();
        // 测试用例1：输入2，预期输出2
        int testCase1 = 2;
        int result1 = solution.jumpFloor(testCase1);
        System.out.println("输入：" + testCase1 + "   返回值：" + result1);
        // 测试用例2：输入7，预期输出21
        int testCase2 = 7;
        int result2 = solution.jumpFloor(testCase2);
        System.out.println("输入：" + testCase2 + "   返回值：" + result2);
    }
}